package com.sqfw.project.wp.service;

import java.text.ParseException;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sqfw.common.utils.Query;
import com.sqfw.framework.web.domain.AjaxResult;
import com.sqfw.framework.web.page.TableDataInfo;
import com.sqfw.project.community.domain.ResultMap;
import com.sqfw.project.community.domain.WpTraceBO;
import com.sqfw.project.wp.domain.*;
import com.sqfw.project.wp.domain.vo.*;

/**
 * 工单表Service接口
 *
 * @author lx
 * @date 2023-06-07
 */
public interface IWpInfoService {
    /**
     * 点击处理按钮前
     *
     * @param scId
     * @param userName
     * @param onOff
     * @throws Exception
     */
    public Boolean processHandle(String scId, String userName, int onOff) throws Exception;

    /**
     * 查询工单表
     *
     * @param scid 工单表主键
     * @return 工单表
     */
    public WpInfo selectWpInfoByScid(String scid);

    /**
     * 查询工单表列表
     *
     * @param wpInfo 工单表
     * @return 工单表集合
     */
    public List<WpInfo> selectWpInfoList(WpInfo wpInfo) throws ParseException;

    /**
     * 新增工单表
     *
     * @param wpInfo 工单表
     * @return 结果
     */
    public int insertWpInfo(WpInfo wpInfo);

    /**
     * 修改工单表
     *
     * @param wpInfo 工单表
     * @return 结果
     */
    public AjaxResult updateWpInfo(WpInfo wpInfo);

    /**
     * 修改工单表(修改是否有责、是否投诉等信息)
     *
     * @param wpInfo 工单表
     * @return 结果
     */
    public int updateWpInfo1(WpInfo wpInfo);

    /**
     * 根据工单号修改工单表(是否声音案例)
     *
     * @param wpid 工单号
     * @return 结果
     */
    public int updateWpInfo2(String wpid);

    /**
     * 批量删除工单表
     *
     * @param scids 需要删除的工单表主键集合
     * @return 结果
     */
    public int deleteWpInfoByScids(String[] scids);

    /**
     * 删除工单表信息
     *
     * @param scid 工单表主键
     * @return 结果
     */
    public int deleteWpInfoByScid(String scid);

    public String getWpId(String channel);

    public List<WpInfo> findWpInfoListByPhone(String phoneno);

    public List<WpInfo> selectWpInfoListByPhoneAndNextState(WpInfo wpInfo);

    public List<WpInfo> exportWpInfoList(WpInfo wpInfo) throws ParseException;

    public TableDataInfo selectprocessedWpInfoList(WpInfo wpInfo) throws ParseException;

    public WpInfo getWpInfoDetailed(WpInfo wpInfo);

    public int updateWpinfoRead(WpInfo wpInfo);

    public AjaxResult batchingWpInfos(WpInfoVO wpInfoVO);

    public TableDataInfo selectVisitWpInfoList(WpInfo wpInfo);

    public WpInfo getProcessedHandleWpinfo(ProcessedWpinfoVO processedWpinfoVO);


    public int reminderEdit(WpInfo wpInfo);

    public int extensionEdit(WpInfo wpInfo);

    public int updateDelFlag(WpInfo wpInfo);

    public PrintWpInfoVO getPrintWpInfo(String scid);

    public WpInfoEchartsVO getWpInfoEcharts();

    public List<WpInfo> selectReviewerUntreatedList(WpInfo wpInfo) throws ParseException;

    public int allocationWpInfo(WpInfo wpInfo);

    public TableDataInfo getManageWpListAll(WpInfo wpInfo) throws ParseException;

    //已催单
    public List<WpInfo> reviewerReminderList(WpHurryLog wpHurryLog);

    //撤销
   public Integer editRevokeWpInfo(String scid);


    public void updateWpInfoSendSatis(String receivePhone, Integer smContent);

    public WpInfo selectWpInfoByWpid(String wpid);

    public List<WpInfo> selectWpBackInfoList(WpInfo wpInfo) throws ParseException;

    void updateWpInfoByManagement(WpInfoManagementVO wpInfoManagementVO);

    List<WpInfo> getVistWpInfoList(WpInfo wpInfo);

    ResultMap orderListAppoint( Query queryMap);

    ResultMap orderInfoAppoint(WpTraceBO wpTrace);

    void updateSendSmsState(WpInfo info);

    int updateVistSmsState(WpInfo info);

    int addWpEvaluateSatis(WpEvaluateSatis wpEvaluateSatis);

    Integer countTsWpid(WpInfo info);

    void updateWpInfoSoundCase(WpInfo wpInfo);

    AjaxResult extensionWpinfoEdit(WpInfo wpInfo);

    List<WpInfo> getExtensionApplyList(WpInfo wpInfo);

    List<WpInfo> organizerList(WpInfo wpInfo);

    WpInfo selectWpInfoByWpidFindDetail(String wpid);

    int updateWpInfoSatis(WpInfo wpInfo);

    TableDataInfo selectManageWpListAll(WpInfo wpInfo) throws ParseException;

}
